package three;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2023-03-01
 * Time: 22:43
 */

//依赖关系传递的三种方式和应用案例

//1.接口传递
//2.构造方法传递
//3.setter方式传递

public class Demo1 {
    //1.接口传递 实现 依赖
    public static void main(String[] args) {
        //创建一个电视机
        ChangHong changHong = new ChangHong();
        //创建一个OpenAndClose对象 开关对象
        OpenAndClose openAndClose = new OpenAndClose();
        //调用open方法 把长虹放进去了 长虹电视机 实现了ITV接口 重写了ITV中的抽象方法
        openAndClose.open(changHong);
    }
}

// 开关的接口
interface IOpenAndClose{
    public void open(ITV tv); //抽象方法,接收就是接口
}

//实现一下
class ChangHong implements ITV{
    @Override
    public void play() {
        System.out.println("长虹电视机打开了");
    }
}

interface ITV{ //ITV接口
    public void play(); //ITV中的play方法 play这个方法 自己实现
}

//实现接口
//这个类 实现了 IOpenAndClose这个接口 就要重写open方法
class OpenAndClose implements IOpenAndClose{
    @Override
    public void open(ITV tv) {
        //在open方法中 接收的也是接口 然后调用到play方法
        tv.play();
    }
}